package moonbox.jdbc;

import java.sql.ResultSetMetaData;
import java.sql.SQLException;

public class MoonboxResultSetMetaData implements ResultSetMetaData {
  private MoonboxConnection connection;
  private MoonboxStatement statement;
  private MoonboxResult result;

  MoonboxResultSetMetaData(MoonboxConnection connection, MoonboxStatement statement, MoonboxResult result) {
    this.connection = connection;
    this.statement = statement;
    this.result = result;
  }

  @Override
  public int getColumnCount() throws SQLException {
    return result.getColumnCount();
  }

  @Override
  public boolean isAutoIncrement(int column) throws SQLException {
    return false;
  }

  @Override
  public boolean isCaseSensitive(int column) throws SQLException {
    return false;
  }

  @Override
  public boolean isSearchable(int column) throws SQLException {
    return false;
  }

  @Override
  public boolean isCurrency(int column) throws SQLException {
    return false;
  }

  @Override
  public int isNullable(int column) throws SQLException {
    return 0;
  }

  @Override
  public boolean isSigned(int column) throws SQLException {
    return false;
  }

  @Override
  public int getColumnDisplaySize(int column) throws SQLException {
    return 0;
  }

  @Override
  public String getColumnLabel(int column) throws SQLException {
    return result.getColumnName(column);
  }

  @Override
  public String getColumnName(int column) throws SQLException {
    return result.getColumnName(column);
  }

  @Override
  public String getSchemaName(int column) throws SQLException {
    return connection.getSchema();
  }

  @Override
  public int getPrecision(int column) throws SQLException {
    return result.getPrecision(column);
  }

  @Override
  public int getScale(int column) throws SQLException {
    return getScale(column);
  }

  @Override
  public String getTableName(int column) throws SQLException {
    return null;
  }

  @Override
  public String getCatalogName(int column) throws SQLException {
    return connection.getCatalog();
  }

  @Override
  public int getColumnType(int column) throws SQLException {
    return result.getColumnType(column);
  }

  @Override
  public String getColumnTypeName(int column) throws SQLException {
    return result.getColumnTypeName(column);
  }

  @Override
  public boolean isReadOnly(int column) throws SQLException {
    return true;
  }

  @Override
  public boolean isWritable(int column) throws SQLException {
    return false;
  }

  @Override
  public boolean isDefinitelyWritable(int column) throws SQLException {
    return false;
  }

  @Override
  public String getColumnClassName(int column) throws SQLException {
    return null;
  }

  @Override
  public <T> T unwrap(Class<T> iface) throws SQLException {
    return null;
  }

  @Override
  public boolean isWrapperFor(Class<?> iface) throws SQLException {
    return false;
  }
}
